shell [[ ]] 命令

shell还提供了 一个比[]更通用的、更灵活的测试命令:[[]],和[]相比,[[]]里可以实现更加复杂的判断关系,支持shell的各种扩展,如算术扩展,支持逻辑运算符:&&、||、!。如果你在[]中使用这些逻辑运算符,运行脚本时就会报错。以上面教程中的比较两个数是否相等的程序为例:

root@pc:/home/demo# cat hello.sh 
#!/bin/bash

echo input a:
read a
echo input b:
read b

if [ $a -gt $b || $a -lt $b ]
then
    echo "a != b"
else
    echo "a = b"
fi


root@pc:/home/demo# ./hello.sh 
input a:
1
input b:
2
./hello.sh: line 8: [: missing `]'
./hello.sh: line 8: 1: command not found
a = b

在上面的脚本中,当我们在[]内添加逻辑或运算符 || 时,程序就会报错。如果我们使用[[]]关键字来改写,就可以避免上面的错误:

root@pc:/home/demo# cat hello.sh 
#!/bin/bash

echo input a:
read a
echo input b:
read b

if [[ $a -gt $b || $a -lt $b ]]
then
    echo "a != b"
else
    echo "a = b"
fi


root@pc:/home/demo# ./hello.sh 
input a:
1
input b:
2
a != b
《Linux三剑客》视频教程:Linux下开发工具vim、Git、Makefile、autotools、qemu、debug精讲,从零开始一步一步写项目的Makefile,提供企业级Makefile模板,Git操作实战,vim从新手到高手,一步一步打造类似Source Insight的IDE!详情点击:王利涛老师个人淘宝店:Linux三剑客